package game.worlds;

import hx.display.BitmapData;
import hx.display.Image;

using tweenxcore.Tools;

/**
 * 背景显示对象
 */
class BGDisplay extends Image {
	/**
	 * 最大X轴偏移量
	 */
	public var maxMoveOffsetX:Float = 0;

	/**
	 * 最大Y轴偏移量
	 */
	public var maxMoveOffsetY:Float = 0;

	override function set_data(value:BitmapData):BitmapData {
		if (value != null) {
			this.originX = -value.width / 2;
			this.originY = -value.height / 2;
		}
		return super.set_data(value);
	}

	override function set_name(value:String):String {
		if (value != null) {
			var names = value.split("_");
			maxMoveOffsetX = Std.parseInt(names[1]);
			maxMoveOffsetY = Std.parseInt(names[2]);
		}
		return super.set_name(value);
	}

	/**
	 * 更新偏移量
	 * @param x 使用`0`-`1`的值
	 * @param y 使用`0`-`1`的值
	 */
	public function update(x:Float, y:Float):Void {
		var sW = (this.width - stage.stageWidth) * 0.5;
		var sH = (this.height - stage.stageHeight) * 0.5;
		sW = Math.min(sW, maxMoveOffsetX);
		sH = Math.min(sH, maxMoveOffsetY);
		this.x = stage.stageWidth / 2 - x.lerp(-sW, sW);
		this.y = stage.stageHeight / 2 - y.lerp(-sH, sH);
	}
}
